export {}

// ?表示可选的
// type Props =  {
//     id: string
//     children: number[]
// }

// // 1. 从已有的类型Props出发，定义新类型：其中每一个属性都是可选的
// // type NewProps =  {
// //     id?: string
// //     children?: number[]
// // }

// type NewProps = Partial<Props>

// const p1: NewProps = { children:[1,2,3]}
// const p2: NewProps = {id:'1', children:[1,2,3]}

// 2. `Readonly<Type>` 用来构造一个类型，将 Type 的所有属性都设置为 readonly(只读)--不可修改。

// type Props = {a:number, b:number}
// type NewProps = Readonly<Props>
// let p1: Props = {a: 1, b:2 }
// let p2: NewProps = {a: 1, b:2 }

// p1.a = 100 // a属性是可以修改的
// p2.a = 200


// 3.Pick
// 作用：从已有的类型中挑选一组属性，来构造新类型。

// 格式：`Pick<老类型, 挑选的属性>` 

type Props = { id: string,title: number,children: {a:number[]}}
// 新类型 PickProps 只有 id 和 title 两个属性类型。


type PickProps1 = Pick<Props, 'id' | 'children'>

type PickProps2 = {id: string,children: number[]}

